home *** CD-ROM | disk | FTP | other *** search
- package netscape.ldap.util;
-
- import java.util.StringTokenizer;
- import java.util.Vector;
-
- // $FF: renamed from: netscape.ldap.util.DN
- public final class class_0 {
- Vector m_rdns = new Vector();
- public static int RFC;
- public static int OSF = 1;
- private int m_dnType;
- public static final char[] ESCAPED_CHAR = new char[]{',', '+', '"', '\\', ';'};
-
- public class_0() {
- this.m_dnType = RFC;
- }
-
- public class_0(String var1) {
- this.m_dnType = RFC;
- if (var1 != null) {
- if (this.isRFC(var1)) {
- StringBuffer var2 = new StringBuffer(var1);
- int var3 = 0;
- StringBuffer var4 = new StringBuffer();
-
- boolean var5;
- for(var5 = false; var3 < var2.length(); ++var3) {
- var4.append(var2.charAt(var3));
- if (var2.charAt(var3) == '\\') {
- char var6 = var2.charAt(var3 + 1);
-
- for(int var7 = 0; var7 < ESCAPED_CHAR.length; ++var7) {
- if (var6 == ESCAPED_CHAR[var7]) {
- ++var3;
- var4.append(var2.charAt(var3));
- break;
- }
- }
- } else if (var2.charAt(var3) == '"') {
- if (var5) {
- var5 = false;
- } else {
- var5 = true;
- }
- } else if (var2.charAt(var3) == ',' && !var5) {
- var4.setLength(var4.length() - 1);
- if (!this.appendRDN(var4)) {
- return;
- }
-
- var4 = new StringBuffer();
- }
- }
-
- if (var5) {
- this.m_rdns.removeAllElements();
- return;
- }
-
- if (!this.appendRDN(var4)) {
- return;
- }
- } else {
- if (var1.indexOf(47) != -1) {
- this.m_dnType = OSF;
- StringTokenizer var8 = new StringTokenizer(var1, "/");
- Vector var9 = new Vector();
-
- while(var8.hasMoreTokens()) {
- String var10 = var8.nextToken();
- if (!RDN.isRDN(var10)) {
- return;
- }
-
- var9.addElement(new RDN(var10));
- }
-
- for(int var11 = var9.size() - 1; var11 >= 0; --var11) {
- this.m_rdns.addElement(var9.elementAt(var11));
- }
-
- return;
- }
-
- if (RDN.isRDN(var1)) {
- this.m_rdns.addElement(new RDN(var1));
- }
- }
-
- }
- }
-
- public void addRDNToFront(RDN var1) {
- this.m_rdns.insertElementAt(var1, 0);
- }
-
- public void addRDNToBack(RDN var1) {
- this.m_rdns.addElement(var1);
- }
-
- public void addRDN(RDN var1) {
- if (this.m_dnType == RFC) {
- this.m_rdns.insertElementAt(var1, 0);
- } else {
- this.m_rdns.addElement(var1);
- }
- }
-
- public void setDNType(int var1) {
- this.m_dnType = var1;
- }
-
- public int getDNType() {
- return this.m_dnType;
- }
-
- public int countRDNs() {
- return this.m_rdns.size();
- }
-
- public Vector getRDNs() {
- return this.m_rdns;
- }
-
- public String[] explodeDN(boolean var1) {
- if (this.m_rdns.size() == 0) {
- return null;
- } else {
- String[] var2 = new String[this.m_rdns.size()];
-
- for(int var3 = 0; var3 < this.m_rdns.size(); ++var3) {
- if (var1) {
- RDN var4 = (RDN)this.m_rdns.elementAt(var3);
- var2[var3] = var4.m_value;
- } else {
- var2[var3] = ((RDN)this.m_rdns.elementAt(var3)).toString();
- }
- }
-
- return var2;
- }
- }
-
- public boolean isRFC() {
- return this.m_dnType == RFC;
- }
-
- public String toRFCString() {
- String var1 = "";
-
- for(int var2 = 0; var2 < this.m_rdns.size(); ++var2) {
- if (var2 != 0) {
- var1 = var1 + ",";
- }
-
- var1 = var1 + ((RDN)this.m_rdns.elementAt(var2)).toString();
- }
-
- return var1;
- }
-
- public String toOSFString() {
- String var1 = "";
-
- for(int var2 = 0; var2 < this.m_rdns.size(); ++var2) {
- if (var2 != 0) {
- var1 = "/" + var1;
- }
-
- RDN var3 = (RDN)this.m_rdns.elementAt(var2);
- var1 = var3.toString() + var1;
- }
-
- return var1;
- }
-
- public String toString() {
- return this.m_dnType == RFC ? this.toRFCString() : this.toOSFString();
- }
-
- public static boolean isDN(String var0) {
- class_0 var1 = new class_0(var0);
- return var1.m_rdns.size() > 0;
- }
-
- public boolean equals(class_0 var1) {
- return var1.toRFCString().toUpperCase().equals(this.toRFCString().toUpperCase());
- }
-
- public class_0 getParent() {
- class_0 var1 = new class_0();
-
- for(int var2 = this.m_rdns.size() - 1; var2 > 0; --var2) {
- RDN var3 = (RDN)this.m_rdns.elementAt(var2);
- if (var1.m_dnType == RFC) {
- var1.m_rdns.insertElementAt(var3, 0);
- } else {
- var1.m_rdns.addElement(var3);
- }
- }
-
- return var1;
- }
-
- public boolean contains(class_0 var1) {
- Vector var2 = var1.m_rdns;
- Vector var3 = this.m_rdns;
- int var4 = var2.size() - 1;
-
- for(int var5 = var3.size() - 1; var4 >= 0 && var5 >= 0; --var5) {
- RDN var6 = (RDN)var2.elementAt(var4);
- RDN var7 = (RDN)var3.elementAt(var5);
- if (!var7.toString().toUpperCase().equals(var6.toString().toUpperCase())) {
- return false;
- }
-
- --var4;
- }
-
- return true;
- }
-
- private boolean isRFC(String var1) {
- for(int var2 = var1.indexOf(44); var2 > 0 && var2 < var1.length() - 1; var2 = var1.indexOf(44, var2 + 1)) {
- if (var1.charAt(var2 - 1) != '\\') {
- return true;
- }
- }
-
- return false;
- }
-
- private boolean appendRDN(StringBuffer var1) {
- String var2 = new String(var1);
- if (RDN.isRDN(var2)) {
- this.m_rdns.addElement(new RDN(var2));
- return true;
- } else {
- this.m_rdns.removeAllElements();
- return false;
- }
- }
- }
-